package com.easylinkin.linkappapi.shigongyun.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easylinkin.linkappapi.device.entity.Device;
import com.easylinkin.linkappapi.shigongyun.vo.MonitorInfoVo;
import com.easylinkin.linkappapi.shigongyun.vo.MonitorRecordVo;
import com.easylinkin.linkappapi.webcammanage.entity.DeviceAttributeStatus;
import site.morn.rest.RestMessage;

import java.util.List;

/**
 * @author zhengwen
 **/
public interface SiteMonitorService {

    /**
     * 监测数据趋势
     *
     * @param monitorInfoVo 监测数据趋势入参vo
     * @return 统一出参
     */
    RestMessage latestMonitorDataTrend(MonitorInfoVo monitorInfoVo);

    /**
     * 获取实时监测数据
     *
     * @param monitorInfoVo 实时监测数据入参vo
     * @return 统一出参
     */
    RestMessage realTimeMonitorData(MonitorInfoVo monitorInfoVo);

    /**
     * 获取摄像头列表
     *
     * @param page              页面
     * @param customQueryParams
     * @return
     */
    IPage<DeviceAttributeStatus> getVideoList(Page page, Device customQueryParams);

    /**
     * 根据设备id获取设备最新属性
     *
     * @param id 设备id
     * @return 设备最新属性list
     */
    List<DeviceAttributeStatus> getVideoInfo(String id);

    /**
     * 获取最新监测项目名称数据
     *
     * @param monitorInfoVo 监测对象vo
     * @return 统一出参
     */
    RestMessage getLatestMonitorNameList(MonitorInfoVo monitorInfoVo);

    /**
     * 获取监测项目K线数据
     *
     * @param monitorRecordVo 监测项目入参vo
     * @return 统一出参
     */
    RestMessage getMonitorKxData(MonitorRecordVo monitorRecordVo);

    /**
     * 获取最新监测项测点下拉数据
     *
     * @param monitorInfoVo 监测对象vo
     * @return 统一出参
     */
    RestMessage getLatestMonitorPointNameList(MonitorInfoVo monitorInfoVo);

    /**
     * 获取测点详情
     *
     * @param monitorRecordVo 监测项目入参vo
     * @return 统一出参
     */
    RestMessage getPointDetail(MonitorRecordVo monitorRecordVo);

    /**
     * 获取配置的视频信息
     *
     * @return 统一出参
     */
    List<DeviceAttributeStatus> getConfigVideoInfo();
}
